package model

import (
	"time"

	"go.mongodb.org/mongo-driver/bson/primitive"
)

type User struct {
	ID primitive.ObjectID `bson:"_id,omitempty" json:"id,omitempty"`
	// TODO: Fill your own fields
	Age       int64     `bson:"age" json:"age"`
	Name      string    `bson:"name" json:"name"`
	Sex       bool      `bson:"sex" json:"sex"`
	Happy     []string  `bson:"happy" json:"happy"`
	Grades    []int64   `bson:"grades" json:"grades"`
	Addresses []Address `bson:"addresses" json:"addresses"`
	UpdateAt  time.Time `bson:"updateAt,omitempty" json:"updateAt,omitempty"`
	CreateAt  time.Time `bson:"createAt,omitempty" json:"createAt,omitempty"`
}

type Address struct {
	City     string    `bson:"city" json:"city"`
	Province string    `bson:"province" json:"province"`
	Country  []string  `bson:"country" json:"country"`
	Student  Student   `bson:"student" json:"student"`
	Students []Student `bson:"students" json:"students"`
}
type AddressEx struct {
	City      string    `bson:"city" json:"city"`
	Province  string    `bson:"province" json:"province"`
	Province1 string    `bson:"province1" json:"province1"`
	Country   []string  `bson:"country" json:"country"`
	Student   Student   `bson:"student" json:"student"`
	Students  []Student `bson:"students" json:"students"`
}

type Student struct {
	Class string `bson:"class" json:"class"`
	Count int64  `bson:"count" json:"count"`
}

type UserEx struct {
	ID primitive.ObjectID `bson:"_id,omitempty" json:"id,omitempty"`
	// TODO: Fill your own fields
	Age          int64       `bson:"age" json:"age"`
	Name         string      `bson:"name" json:"name"`
	Sex          bool        `bson:"sex" json:"sex"`
	Happy        []string    `bson:"happy" json:"happy"`
	Grades       []int64     `bson:"grades" json:"grades"`
	TotalGrades1 int64       `bson:"totalGrades1" json:"totalGrades1"`
	TotalGrades2 int64       `bson:"totalGrades2" json:"totalGrades2"`
	TotalGrades  int64       `bson:"totalGrades" json:"totalGrades"`
	AddressEx    []AddressEx `bson:"addressExes" json:"addressExes"`
	Student      Student     `bson:"student" json:"student"`
	UpdateAt     time.Time   `bson:"updateAt,omitempty" json:"updateAt,omitempty"`
	CreateAt     time.Time   `bson:"createAt,omitempty" json:"createAt,omitempty"`
}
